import tensorflow as tf
import datetime

mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

def create_model():
  return tf.keras.models.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)), # 784
    tf.keras.layers.Dense(600, activation='relu'),
    tf.keras.layers.Dense(200, activation='relu'),
    tf.keras.layers.Dense(100, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
  ])

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',  #输入无需独热
              metrics=['accuracy'])

#定义log_dir:注意keras转义格式
log_dir=r"logs3\\fit\\" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
# 数据回调到tensorboard中
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

# callbacks 回调
model.fit(x=x_train,
          y=y_train,
          epochs=1,
          validation_data=(x_test, y_test),
          callbacks=[tensorboard_callback])

import numpy as np
num = np.random.randint(0, len(x_test));print(x_test[num].shape)
y_ = np.argmax(model.predict(x_test[num].reshape(-1, 28, 28)))
print(y_)

# 绘制图片，添加这功能
summary_writer = tf.summary.create_file_writer(log_dir)
with summary_writer.as_default():
    tf.summary.image("测试结果为:%d"%y_, x_test[num].reshape(-1, 28, 28, 1), step=0)
